﻿using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices.ComTypes;
using System.Security.Cryptography.X509Certificates;

namespace Sympol.SecondPass
{

    
    public interface IValue : IExpression
    {
       
    }

    public interface IReturn : IExpression
    {
        
    }
    public interface IObject : IValue
    {
        
    }

    public interface INumber : IValue
    {
        
    }

    public interface IString : IValue
    {
        
    }

    public interface IBoolean : IValue
    {
        
    }

    public interface ITrue : IBoolean
    {
        
    }

    public interface IFalse : IBoolean
    {
        
    }

    public interface IUndefined : IValue
    {
        
    }
    public interface IReference : IValue
    {
        IReference Child { get; set; }
    }

    public interface ICall : IValue
    {
        IValue Parent { get; set; }
        IEnumerable<string> Params { get; set; }
    }
    
    public interface IFunction : IValue
    {
        IEnumerable<string> Params { get; set; }
        IEnumerable<IExpression> Expressions { get; set; }
    }

}
